package com.yunyao.web.controller;

import com.yunyao.common.dto.MaterialCategoryDto;
import com.yunyao.common.dto.MaterialDto;
import com.yunyao.common.web.util.PageResult;
import com.yunyao.common.web.util.YResult;
import com.yunyao.framework.service.MaterialService;
import com.yunyao.framework.vo.material.MaterialCategoryTreeVO;
import com.yunyao.framework.vo.material.MaterialVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author xingjishuai
 * @date 2024-07-24
 */
@RestController
@RequestMapping("/material")
public class MaterialController {

    @Autowired
    private MaterialService materialService;

    /**
     * 获取材料列表
     *
     * @param materialDto
     * @return
     */
    @GetMapping("/list")
    public YResult<PageResult<MaterialVO>> getList(MaterialDto materialDto) {
        return materialService.pageList(materialDto);
    }

    /**
     * 获取材料分类树
     * 该方法通过发送GET请求来获取材料的分类树结构
     * 主要用于前端展示材料分类的层次结构
     *
     * @param materialCategoryDto 材料分类的查询条件传输对象，可能包含用于过滤分类的条件
     * @return 返回一个包含材料分类树的Result对象，其中Result对象是对可能的输出结果进行封装的通用响应类
     */
    @GetMapping("/category/tree")
    public YResult<List<MaterialCategoryTreeVO>> categoryTree(MaterialCategoryDto materialCategoryDto) {
        return materialService.categoryTree(materialCategoryDto);
    }

}
